/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import dao.DAOFactory;
import dao.VendaDAO;
import model.Venda;
import dao.DAOFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import ordenacao.OrdenacaoPorCodigoVenda;
import utils.ExcecaoSCEV;





public class CtrCadastroVenda {
     private static CtrCadastroVenda umCtrCadastroVenda;
    VendaDAO vendaDAO;

    private CtrCadastroVenda(){


     DAOFactory daoFactory = new DAOFactory();
     vendaDAO = daoFactory.getVendaDAO();

    }

    public static CtrCadastroVenda getInstance(){
        if (umCtrCadastroVenda == null){
            umCtrCadastroVenda = new CtrCadastroVenda();
        }
        return umCtrCadastroVenda;
    }


    public List <Venda> listarTodos(int ordenacao) throws ExcecaoSCEV{
        List <Venda>lista = new ArrayList <Venda>();
        lista = vendaDAO.pegarTodos();
        ordenar(ordenacao, lista);
        return lista;
    }

    private boolean validar(Venda venda) throws ExcecaoSCEV {

        if(venda.getCodigoProduto() == null || venda.getCodigoProduto().equals("")){
            throw new ExcecaoSCEV("Codigo deve ser preenchido");
        }
       
        if (venda.getQuantidade() == null || venda.getQuantidade().equals("")){
            throw new ExcecaoSCEV("Número deve ser preenchido");
        }
        if (venda.getPreco() == null || venda.getPreco().equals("")){
            throw new ExcecaoSCEV("Preço deve ser preenchido");
        }
        return true ;
    }

    public void incluir (Venda venda) throws ExcecaoSCEV {
        try {
            if (validar(venda))
              vendaDAO.incluir(venda);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

    public void alterar (Venda venda) throws ExcecaoSCEV {
        try {
            if (validar(venda))
                vendaDAO.alterar(venda);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

        public void excluir (Venda venda) throws ExcecaoSCEV {
        try {
            vendaDAO.excluir(venda);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }

    }

    public void carregar(Venda venda) throws ExcecaoSCEV {
        try {
            vendaDAO.carregar(venda);
        } catch (ExcecaoSCEV ex)  {
            throw new ExcecaoSCEV(ex.getMsg());
        }
    }

    public void ordenar(int ordenacao, List<Venda> lista) {

        if (ordenacao == 0) {
            Collections.sort(lista, new OrdenacaoPorCodigoVenda());
        }
    }





    }
        
        
    
   